//
// Created by Administrator on 2020/6/27.
//函数递归调用-2
//递归算法汉诺塔问题:将n个盘子从A针移动至C针
//问题分解:1.将A上n-1个盘子移到B针上（借助C针）
//2.把A针上剩下的一个盘子移到C针上
//3.将n-1个盘子从B针移到C针上（借助A针）

#include <iostream>
using namespace  std;
//把src针的最上面的一个盘子移到dest针上
void move(char src,char dest)
{
    cout<<src<<"--->"<<dest<<endl;
}
//自制函数:把n个盘子从src针移到dest针，以medium针作为中介
void hanoi(int n,char src,char mediu,char dest)
{
    if (n==1)
        move(src,dest);
    else
    {
        hanoi(n-1,src,dest,mediu);
        move(src,dest);
        hanoi(n-1,mediu,src,dest);
    }
}
//主函数
int main()
{
    int m;
    cout<<"Enter the number of diskes:";
    cin>>m;
    cout<<"the steps to moving"<<m<<"diskes:"<<endl;
    hanoi(m,'A','B','C');
    return 0;
}